Developers and/or vendors of software often make updates, enhancements, additions, modifications, etc., available to customers, such as by transmission over a network, delivery by mail or courier, and the like. The software made available to customers or potential customers often is contingent upon payment or upon some earlier payment or agreement, such as a purchase and license of some software application. The software made available may include updates, enhancements, additions, and the like, of the software or may be additional functional modules or the like to supplement the performance or capabilities of the core software (herein collectively referred to as “modifications” of the core software). Further, it is often desirable to provide customers the software in binary form as opposed to source code, when the source code is of a proprietary nature. This allows a customer, through a provided application programming interface (API), to develop additional software and functionality using the provided binary code as a basis without subjecting the underlying operation of the software to scrutiny by the customer as would be possible using the source code.
In many cases, different versions of a software release may include different subsets, or “tiers”, of functionality to accommodate a variety of customers. To illustrate, a software release may have a basic version and an enhanced version that includes additional functionality in excess of the basic version. A typical approach to restrict access to the tiers of functionality is to provide separate versions of the binary code to different customers, each version implementing only the tiers of functionality for which the designated customer is authorized to access. Accordingly, there may be multiple and varied classes of licenses and licensees maintained by a software developer/vendor for any given software product. Offering multiple variants of code is expensive both in terms of having to test and support multiple variants as well as providing difficulties for customers wanting to add new tiers of functionality in that they are required to integrate a new binary code deliverable in order to change their tiers of functionality. As a result, the developer/vendor often must expend considerable resources developing, verifying, compiling, maintaining, storing, and/or servicing the often numerous versions of the core software.
Accordingly, an improved system and a method for restricting access to tiers of functionality in software would be advantageous.